using UnityEngine;
using System.Collections;

public class Camera3d : MonoBehaviour
{
	GameObject[] paredes;
	GuiScript guiScript;
	
	void Awake ()
	{
		guiScript = GetComponent<GuiScript>();
	}

	// Update is called once per frame
	void Update ()
	{
		MovCamera();
		RenderingWalls();
	}

	void RenderingWalls ()
	{
		paredes = GameObject.FindGameObjectsWithTag ("Parede");
		foreach (GameObject parede in paredes)
		{
			//paredes da esquerda
			if (transform.localEulerAngles.y > 0 && transform.localEulerAngles.y < 180)
			{
				if (parede.transform.localEulerAngles.y == 90)
				{
					parede.renderer.enabled = false;
				}
			}
			else
			{
				if (parede.transform.localEulerAngles.y == 90)
				{
					parede.renderer.enabled = true;
				}
			}
			
			//paredes da direita
			if (transform.localEulerAngles.y > 180 && transform.localEulerAngles.y < 360)
			{
				if (parede.transform.localEulerAngles.y == 270)
				{
					parede.renderer.enabled = false;
				}
			}
			else
			{
				if (parede.transform.localEulerAngles.y == 270)
				{
					parede.renderer.enabled = true;
				}
			}

			//paredes da baixo
			if (transform.localEulerAngles.y > 270 || transform.localEulerAngles.y < 90)
			{
				if (parede.transform.localEulerAngles.y == 0)
				{
					parede.renderer.enabled = false;
				}
			}
			else
			{
				if (parede.transform.localEulerAngles.y == 0)
				{
					parede.renderer.enabled = true;
				}
			}
			
			//paredes da cima
			if (transform.localEulerAngles.y > 90 && transform.localEulerAngles.y < 270)
			{
				if (parede.transform.localEulerAngles.y >= 179 && parede.transform.localEulerAngles.y <= 181)
				{
					parede.renderer.enabled = false;
				}
			}
			else
			{
				if (parede.transform.localEulerAngles.y >= 179 && parede.transform.localEulerAngles.y <= 181)
				{
					parede.renderer.enabled = true;
				}
			}
		}
	}

	void MovCamera ()
	{
		Vector3 direcao = (transform.right * Input.GetAxis ("Horizontal") * Time.deltaTime * guiScript.STEP) + (transform.forward * Input.GetAxis ("Vertical") * Time.deltaTime * guiScript.STEP);
		direcao = new Vector3(direcao.x, 0, direcao.z);
		transform.position += direcao;
		if (Input.GetKey (KeyCode.Q))
			transform.eulerAngles -= new Vector3 (0, guiScript.ANGLE, 0);
		if (Input.GetKey (KeyCode.E))
			transform.eulerAngles += new Vector3 (0, guiScript.ANGLE, 0);
	}
	
}